package com.onesports.intelligent.k12.polarlight.annotation;

import java.lang.annotation.*;

/**
 * 分布式锁，目前只实现公平锁，
 * 默认策略处理超时异常，后续再扩展多种策略
 * 后续同时支持多种锁及自定义业务key
 *
 * @author aj
 */
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface DistributedLock {

    /**
     * 锁的名称
     */
    String value();

    /**
     * 锁的有效时间，单位秒，默认手动释放锁
     *
     */
    int leaseTime() default -1;

    /**
     * 获取锁等待时间，单位秒
     * leaseTime为-1时，此值无意义
     */
    long waitTime() default 0L;

    /**
     * 业务键，支持Spel表达式
     * @return
     */
    String [] keys() default {};
}


